package com.glialsoft.persistencia.daos;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceException;
import javax.persistence.Query;

import com.glialsoft.negocio.dtos.UsuarioDTO;
import com.glialsoft.persistencia.entidades.Roles;
import com.glialsoft.persistencia.entidades.Usuario;


@Stateless
@LocalBean
public class UsuarioDAO {


@PersistenceContext(unitName = "glialconect")
private EntityManager em;


public UsuarioDAO(){

	
}


public void agregarNuevoUsuario(UsuarioDTO usuarioDTO){
	try {
	System.out.print("Registro de usuario");
	//String nameSQL="INSERT INTO pacientes (nombre,password,id_rol) VALUES ('"+usuarioDTO.getNombre()+"','"+usuarioDTO.getPassword()+"',"+1 +")";
	
	Usuario nuevoU = new Usuario();
	nuevoU.setNombre(usuarioDTO.getNombre());
	nuevoU.setPassword(usuarioDTO.getPassword());
	nuevoU.setEmail(usuarioDTO.getEmail());
	nuevoU.setTelefono(usuarioDTO.getTelefono());
	Roles rol = new Roles(usuarioDTO.getRol().getIdRol());
	nuevoU.setRoles(rol);
	int id_next= 1+ (Integer)em.createQuery("select max(u.idUsuario) from Usuario u").getSingleResult();
	nuevoU.setIdUsuario(id_next);
	

		em.persist(nuevoU);
	}
	catch (PersistenceException e) {
		e.printStackTrace();
		
	}
System.out.println("Registro realizado");
	
	
}



public void actualizaroUsuario(UsuarioDTO usuarioDTO){
	try {
	System.out.print("Actualizacion e usuario "+usuarioDTO.getNombre() +" id:"+usuarioDTO.getIdUsuario());
	//String nameSQL="INSERT INTO pacientes (nombre,password,id_rol) VALUES ('"+usuarioDTO.getNombre()+"','"+usuarioDTO.getPassword()+"',"+1 +")";
	
	Usuario nuevoU = new Usuario();
	nuevoU.setIdUsuario(usuarioDTO.getIdUsuario());
	
	nuevoU.setNombre(usuarioDTO.getNombre());
	nuevoU.setPassword(usuarioDTO.getPassword());
	nuevoU.setEmail(usuarioDTO.getEmail());
	nuevoU.setTelefono(usuarioDTO.getTelefono());
	Roles rol = new Roles(usuarioDTO.getRol().getIdRol());
	nuevoU.setRoles(rol);
	
	

		em.merge(nuevoU);
	}
	catch (PersistenceException e) {
		e.printStackTrace();
		
	}
System.out.println("Usuario Actualizado");
	
	
}



public List<Usuario> listaUsuarios(){
	List<Usuario> listUsuario = new ArrayList<Usuario>();
	
	try {
		String sql = "SELECT u FROM Usuario u ";
		
		Query consulta = em.createQuery(sql);
		listUsuario = consulta.getResultList();
		
	} catch (PersistenceException e) {
		e.printStackTrace();
		
	}
	
	
	return listUsuario;
}

public List<Roles>ListaRoles(){
	List<Roles > roles = new ArrayList<Roles>();

	try {
		String sql = "SELECT r FROM Roles r ";
		
		Query consulta = em.createQuery(sql);
		roles = consulta.getResultList();
		
	} catch (PersistenceException e) {
		e.printStackTrace();
		
	}
	
	
	return roles;
}

public Usuario darUsuario(int id_usuario){
	Usuario usuLo=null;
	try {
		String sql = "SELECT u FROM Usuario u WHERE u.idUsuario="+id_usuario;
		
		Query consulta = em.createQuery(sql);
		usuLo=(Usuario)consulta.getSingleResult();
		
	} catch (PersistenceException e) {
		e.printStackTrace();
		
	}
	
return usuLo;
}

public Usuario valdiarLogin(String usuario , String password){
	Usuario usuLo=null;
	try {
		String sql = "SELECT u FROM Usuario u WHERE u.nombre='"+usuario+"' AND u.password='"+password+"' ";
		
		Query consulta = em.createQuery(sql);
		usuLo=(Usuario)consulta.getSingleResult();
		
	} catch (PersistenceException e) {
		e.printStackTrace();
		
	}
	
return usuLo;
}

}
